私はちょうどidrisと定理を証明して遊んでいます。私はインターネット上の基本的な事実の証拠の例のほとんどを追うことができるので、私は自分自身で何かを試してみたかったのです。だから、私は、マップの次の基本的な性質のための証拠用語を書きたい: map : (a -> b) -> List a -> List b
prf : map id = id
直感的に、私は証拠がどのように動作するかを想像
は、これまでのところ私は(Jeremy Siekによってパターンを使用して)イザベルに次のスタイルで背理法を書いた: lemma "<expression>"
proof -
{
assume "¬ <expression>"
then have False sorry
}
then show ?thesis by blast
qed
は、
私はthis重み付き乱数発生器を使用しました。 import random
def weighted_choice(weights):
totals = []
running_total = 0
for w in weights:
running_total += w
totals.append(running_total)
に数学の誘導を実装する data Nat = Zero | Succ Nat
type Predicate = (Nat -> Bool)
-- forAllNat p = (p n) for every finite defined n :: Nat
implies :: Bool -> Bool -> Bool
implies p q = (not p) || q
baseca
この演習は、ハスケルでの等式推論と証明に当てはまりました。次のコードが与えられます: type Stack = [Int]
type Code = [Op]
data Op = PUSH Int | ADD
deriving (Show)
--
-- Stack machine
--
exec :: Code -> Stack -> Stack
exec [ ] s = s
ex