feat: Elementarized tactics with motives, congruence, and absurdity #72
No reviewers
Labels
No Label
category
bug
category
doc
category
feature
category
optimization
category
organization
part/Delation
part/Elab
part/Environment
part/FFI
part/Frontend
part/Goal
part/REPL
part/Serial
priority
high
priority
irrelevant
priority
low
priority
medium
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: aniva/Pantograph#72
Loading…
Reference in New Issue
No description provided.
Delete Branch "goal/mapply"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This implements a one-step solution for the problem in aniva/Trillium#124.
let motive: Motive := _
bindings with the necessary metavariables. This resolves the problem of non-elementarity of applying motive-based symbols.noConfuse
tactic uses.noConfusion
on an existing impossible equalitycongruenceArg
,congruenceFun
, andcongruence
) apply thecongrArg
,congrFun
, andcongr
lemmata via a conduit type.(:subst ...)
sexp represents a delayed assigned mvar whose pending mvar is not assigned in any way. Also starts the gradual shift from sexp to rawExpr
objects in the FFI, but sexp's will remain for the foreseeable future.Waiting for this: https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Elaborator.20and.20.40/near/433364676
MWE to reproduce the implicit lambda problem:
I think the metavariables generated by
mapply
don't have to besyntheticOpaque
, since noisDefEq
operation is contained in it, but we'll see if this is a problem.This breaks current metavariable resolution schema because the motive variable is delay assigned. See https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Force.20instantiate.20delay.20assigned.20metavariable/near/438042381
feat: Motivated apply (mapply) tacticto feat: Elementarized tactics with motives, congruence, and absurdityThere are currently 3 solutions to this issue:
I've decided to go with method (3). This requires a new abstraction in the sexp layer. Maybe the sexp should just be removed.