-- import Adam.StructInstWithHoles -- import Mathlib -- example : Module ℚ ℝ := by -- refine { ?..! } -- exact fun a r => a * r -- intro b -- sorry -- sorry -- sorry -- sorry -- sorry -- sorry -- sorry -- structure Foo where -- x : Nat := 0 -- y : Nat -- structure Bar extends Foo where -- z : Nat := x -- example := by refine { ?.. : Foo }; case y => exact 0 -- example := by refine { ?.. : Bar }; case y => exact 0 -- example := by refine { ?..a : Bar }; case a.y => exact 0 -- example := by refine { ?..! : Bar }; case x | y | z => exact 0; -- example := by refine { ?..!a : Bar }; case a.x | a.y | a.z => exact 0; -- -- example := by refine' { ... : Bar }; exact 0 -- example := by refine' { .. : Bar }; exact 0; exact 0; exact 0 -- -- example := by refine' { ..! : Bar }; exact 0; exact 0; exact 0 -- structure rflFoo where -- x : Nat -- y : Nat -- xy : x = y := by rfl -- example := by refine { ?.. : rflFoo }; (case x | y => exact 0); case xy => rfl -- example := by refine { ?..! : rflFoo }; (case x | y => exact 0); case xy => rfl -- structure autoFoo where -- x : Nat := 0 -- y : Nat := 0 -- xy : x = y := by rfl -- example := { ?.. : autoFoo } -- example := by refine { ?..! : autoFoo }; (case x | y => exact 0); case xy => rfl -- def f : Foo → Nat := fun _ => 0 -- def ff : Foo → Foo → Unit := fun _ _ => () -- def ffb : Foo → Bar → Unit := fun _ _ => () -- def ffa : Foo → autoFoo → Unit := fun _ _ => () -- example := by refine { x := f { ?.. }, ?.. : Foo }; case y | y_1 => exact 0 -- example := by refine { x := f { ?..x }, ?.. : Foo }; case x.y | y => exact 0 -- example := by refine { x := f { ?.. }, ?..x : Foo }; case y | x.y => exact 0 -- example := by refine { x := f { ?..x }, ?..x : Foo }; case x.y | x.y_1 => exact 0 -- example := by refine ff { ?.. } { ?.. }; case y | y_1 => exact 0 -- example := by refine ff { ?..! } { ?.. }; case x | y | y_1 => exact 0 -- example := by refine ffb { ?..! } { ?..! }; case x | y | x_1 | y_1 | z_1 => exact 0 -- example := by refine ffa { ?..! } { ?..! }; (case x | y | x_1 | y_1 => exact 0); rfl -- structure Foo' where -- x : Nat -- structure dFoo' where -- x : Nat := 0 -- def ff' : Foo → Foo' → Unit := fun _ _ => () -- def fdf' : Foo → dFoo' → Unit := fun _ _ => () -- example := by refine ff' { ?.. } { ?.. }; case y | x_1 => exact 0 -- example := by refine fdf' { ?.. } { ?.. }; case y => exact 0 -- structure Fooα (α : Type) where -- x : α -- example := by refine { ?.. : Fooα Nat}; case x => exact 0 -- structure Fooαi where -- {α : Type} -- x : α -- example := by refine { ?.. : Fooαi }; (case α => exact Nat); case x => exact 0 -- /- haveFieldProj tests (subject to be moved)-/ -- section haveFieldProj -- structure Foo'' where -- x : Bool -- y : Nat -- def foo'': Foo'' := { x := true, y := 0 } -- example := by -- refine { ?.. : Foo''}; -- haveFieldProj; -- case x => exact x.proj foo''; -- case y => exact 0 -- example := by -- refine { ?.. : Foo''}; -- haveFieldProj as a; -- case x => exact a foo''; -- case y => exact 0 -- example := by -- refine { ?.. : Foo''}; -- haveFieldProj y; -- case x => exact 0 == y.proj foo''; -- case y => exact 0 -- example := by -- refine { ?.. : Foo''}; -- haveFieldProj y as a; -- case x => exact 0 == a foo''; -- case y => exact 0 -- end haveFieldProj