namespace http://mathhub.info/MitM/core/elliptic_curves ❚
theory Minimal_Weierstrass_model : ?Base =
include ?Elliptic_curve ❙
minimal : weierstrass_model ⟶ weierstrass_model ❙
is_minimal : weierstrass_model ⟶ prop ❘ = [A] (minimal A) ≐ A ❙
// need separators ❙
// minimality_condition : {A : tm Weierstrass_model,B : tm Weierstrass_model} ⊦ (minimal A) ≐ B → ⊦ absolute_value (discriminant B) ≤ absolute_value (discriminant A) ❙
// Dennis: For some reason this doesn't typecheck. I have an idea why, but no idea how to solve it yet. ❙
minimality_idempotence : {A} ⊦ minimal (minimal A) ≐ minimal A ❙
// the whole thing with minimal stinks of redundancy. it should be reusing partial orders and minimality over N ❙
minimality_of_minimal_Weierstrass_model : {A} ⊦ is_minimal (minimal_Weierstrass_model A) ❙
injective_minimal_Weierstrass_model : {A,B} ⊦ minimal_Weierstrass_model A ≐ minimal_Weierstrass_model B ⟶ ⊦ A ≐ B ❙
// roundtrip_Weierstrass_model_construction : {A} ⊦ A ≐ Weierstrass_model_construction (minimal_Weierstrass_model A) ❙
// Dennis: now subsumed by elliptic_curve?construction_surjective ❙
❚