coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Ike Mulder <i.mulder AT cs.ru.nl>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] check whether a variable is in the context of an evar
- Date: Fri, 22 Sep 2023 10:18:51 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=i.mulder AT cs.ru.nl; spf=Pass smtp.mailfrom=i.mulder AT cs.ru.nl; spf=Pass smtp.helo=postmaster AT smtp3.science.ru.nl
- Ironport-data: A9a23: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 G/OX2rqL1F8Tke4V4MAQAeo94Z4jRQ5iNXA4d2I
- Ironport-hdrordr: A9a23:7iWaoa/MioPVS/rxgbtuk+AoI+orL9Y04lQ7vn2ZKSY/TiVXra +TdZUgpHzJYVkqMk3I9ersBEDiexPhHPxOj7X5VI3KNDUO01HIEGgW1/qG/9SWIVybygcy78 tdmtBFeb/NJGk/ttzi6A20V/4r3dmA98mT9J/j5kYodhtyY6Vsqz9kBhqWVm16LTM2Y6YRJd 6m/NNOozflQ3gNccihb0N1ONTrlpnwjZrjbFo8CwQ67RTmt0LQ1ILH
- Ironport-phdr: A9a23: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
- Ironport-sdr: 650d4df5_r9+NP1zU9MKYEe+/Vk9Ns84c0pAZutSLejzbTWISKpQPnLV MDhLffLEC/hKgacLFpMIhq6h9Hms8QqTF3RlLJg==
Hey Abhishek,
You can just do something like `(unify the_evar (some_function the_variable)) || other_case`. If the variable is not in the context of the evar, unify will fail and trigger execution of the other_case branch. You could also wrap the unify call in an 'assert_succeeds' if you only want to check, not actually unify.
If you are using Ltac2, you can also extract this information
directly from an evar. The array of constrs in the Evar constructor
contain terms (usually variables) that were in scope when the evar
was created. (If variables have been rewritten in the mean time,
some of them might not be variables anymore.)
To get access to this array, you need to do something like
`match Constr.Unsafe.kind the_evar with
| Constr.Unsafe.Evar e cs => <your code here>
| _ => Control.throw Not_found
end`
Hope this helps! Ike
- [Coq-Club] check whether a variable is in the context of an evar, Abhishek Anand, 09/21/2023
- Re: [Coq-Club] check whether a variable is in the context of an evar, Ike Mulder, 09/22/2023
Archive powered by MHonArc 2.6.19+.