https://github.com/EasyCrypt/easycrypt
Tip revision: 846710a2a656834065e745d19416ebdc83158f55 authored by Benjamin Gregoire on 14 July 2019, 06:50:07 UTC
Start restructuration of the code to be able to avant mutual dependency between type and mpath
Start restructuration of the code to be able to avant mutual dependency between type and mpath
Tip revision: 846710a
Bool.ec
(* --------------------------------------------------------------------
* Copyright (c) - 2012--2016 - IMDEA Software Institute
* Copyright (c) - 2012--2018 - Inria
* Copyright (c) - 2012--2018 - Ecole Polytechnique
*
* Distributed under the terms of the CeCILL-B-V1 license
* -------------------------------------------------------------------- *)
(* -------------------------------------------------------------------- *)
require FinType.
op (^^) (b1 b2:bool) = b1 = !b2.
lemma nosmt xor_false b: b ^^ false = b
by [].
lemma nosmt xor_true b: b ^^ true = !b
by [].
lemma nosmt xorA b1 b2 b3: (b1 ^^ b2) ^^ b3 = b1 ^^ (b2 ^^ b3)
by [].
lemma nosmt xorC b1 b2: b1 ^^ b2 = b2 ^^ b1
by [].
lemma nosmt xorK b: b ^^ b = false
by [].
clone FinType as BoolFin with
type t <- bool,
op enum <- List.(::) true (List.(::) false List."[]"),
op card <- 2
proof enum_spec by case.