lean4-htt/tests/lean/run/andCasesOnBug.lean

28 lines
773 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

inductive FinInt: Nat → Type :=
| nil: FinInt 0
| next: Bool → FinInt n → FinInt (n+1)
deriving DecidableEq
def zero (sz: Nat): FinInt sz :=
match sz with
| 0 => .nil
| sz+1 => .next false (zero sz)
inductive Pair :=
| mk (sz: Nat) (lhs rhs: FinInt sz)
def makePair?: (n m: (sz: Nat) × FinInt sz) → Option Pair
| ⟨sz, lhs⟩, ⟨sz', rhs⟩ =>
if EQ: true /\ sz = sz' then
have rhs' : FinInt sz := by {
cases EQ;
case intro left right =>
simp [right];
exact rhs;
};
some (Pair.mk sz lhs rhs')
else none
def usePair: Pair → Bool := fun ⟨sz, lhs, rhs⟩ => lhs = rhs
#eval (makePair? ⟨8, zero 8⟩ ⟨8, zero 8⟩).map usePair