theory scratch imports HoTT begin term "UN" (* Typechecking *) schematic_goal "\a : A; b : B\ \ (a,b) : ?A" by derive (* Simplification *) notepad begin assume asm: "f`a \ g" "g`b \ \<^bold>\x:A. d" "c : A" "d : B" have "f`a`b`c \ d" by (simplify lems: asm) end lemma "a : A \ indEqual[A] (\x y _. y =\<^sub>A x) (\x. refl(x)) a a refl(a) \ refl(a)" by simplify lemma "\a : A; \x. x : A \ b x : X\ \ (\<^bold>\x:A. b x)`a \ b a" by simplify schematic_goal "\a : A; \x. x : A \ b x : X\ \ (\<^bold>\x:A. b x)`a \ ?x" by rsimplify lemma assumes "a : A" and "\x. x : A \ b x : B x" shows "(\<^bold>\x:A. b x)`a \ b a" by (simplify lems: assms) lemma "\a : A; b : B a; B: A \ U; \x y. \x : A; y : B x\ \ c x y : D x y\ \ (\<^bold>\x:A. \<^bold>\y:B x. c x y)`a`b \ c a b" by (simplify) lemma assumes "(\<^bold>\x:A. \<^bold>\y:B x. c x y)`a \ \<^bold>\y:B a. c a y" "(\<^bold>\y:B a. c a y)`b \ c a b" shows "(\<^bold>\x:A. \<^bold>\y:B x. c x y)`a`b \ c a b" by (simplify lems: assms) lemma assumes "a : A" "b : B a" "B: A \ U" "\x y. \x : A; y : B x\ \ c x y : D x y" shows "(\<^bold>\x:A. \<^bold>\y:B x. c x y)`a`b \ c a b" by (simplify lems: assms) lemma assumes "a : A" "b : B a" "c : C a b" "B: A \ U" "\x. x : A\ C x: B x \ U" "\x y z. \x : A; y : B x; z : C x y\ \ d x y z : D x y z" shows "(\<^bold>\x:A. \<^bold>\y:B x. \<^bold>\z:C x y. d x y z)`a`b`c \ d a b c" by (simplify lems: assms) (* HERE IS HOW WE ATTEMPT TO DO PATH INDUCTION --- VERY GOOD CANDIDATE FOR THESIS SECTION *) schematic_goal "\A : U; x : A; y : A\ \ ?x : x =\<^sub>A y \ y =\<^sub>A x" apply (rule Prod_intro) apply (rule Equal_form) apply assumption+ apply (rule Equal_elim) back back back back back back back back back back back back back thm comp end