41 lines
838 B
Text
41 lines
838 B
Text
def BV (n : Nat) := { b : Array Bool // b.size = n }
|
||
|
||
instance : Coe (BV 32) (Array Bool) where
|
||
coe bv := bv.val
|
||
|
||
def f (x : BV n) := x
|
||
|
||
def g (x : Array Bool) := x
|
||
|
||
def h (x : BV 32) : Array Bool :=
|
||
(fun x => g (f x)) x
|
||
|
||
#print h
|
||
|
||
def r (a : Nat) : Prop :=
|
||
if a == 0 then (a != 1 : Prop) else a != 2
|
||
|
||
#print r
|
||
|
||
set_option pp.all true in
|
||
#print r
|
||
|
||
structure ConstantFunction (α β : Type) :=
|
||
(f : α → β)
|
||
(h : ∀ a₁ a₂, f a₁ = f a₂)
|
||
|
||
instance constFunCoe {α β : Type} : CoeFun (ConstantFunction α β) (fun _ => α → β) :=
|
||
{ coe := fun c => c.f }
|
||
|
||
def myFun {α : Type} : ConstantFunction α (Option α) :=
|
||
{ f := fun a => none,
|
||
h := fun a₁ a₂ => rfl }
|
||
|
||
def myFun' (α : Type) : ConstantFunction α (Option α) :=
|
||
{ f := fun a => none,
|
||
h := fun a₁ a₂ => rfl }
|
||
|
||
def s :=
|
||
myFun 3 <|> myFun 4
|
||
|
||
#print s
|