aboutsummaryrefslogtreecommitdiff
path: root/src/Util/SideConditions/Autosolve.v
blob: 840d3a592e556a27ed68d120185ea703b48f9d75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Require Import Crypto.Util.Decidable.
Require Import Crypto.Util.SideConditions.CorePackages.
Require Import Crypto.Util.SideConditions.AdmitPackage.
Require Import Crypto.Util.SideConditions.ModInvPackage.
Require Import Crypto.Util.SideConditions.ReductionPackages.
Require Import Crypto.Util.SideConditions.RingPackage.

Ltac autosolve_gen autosolve_tac ring_intros_tac else_tac :=
  CorePackages.preautosolve ();
  CorePackages.Internal.autosolve ltac:(fun _ =>
  AdmitPackage.autosolve ltac:(fun _ =>
  ModInvPackage.autosolve ltac:(fun _ =>
  ReductionPackages.autosolve autosolve_tac ltac:(fun _ =>
  RingPackage.autosolve_gen_intros ring_intros_tac ltac:(fun _ =>
  CorePackages.autosolve else_tac
                                       ))))).

Ltac autosolve_gen_intros ring_intros_tac else_tac :=
  autosolve_gen ltac:(autosolve_gen_intros ring_intros_tac) ring_intros_tac else_tac.

Ltac autosolve else_tac := autosolve_gen_intros default_ring_intros_tac else_tac.