Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] goal selectors; tactic expressions

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] goal selectors; tactic expressions


Chronological Thread 
  • From: Jeremy Dawson <Jeremy.Dawson AT anu.edu.au>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] goal selectors; tactic expressions
  • Date: Fri, 25 Jan 2019 14:06:56 +0000
  • Accept-language: en-US
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.mailfrom=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.helo=postmaster AT AUS01-SY3-obe.outbound.protection.outlook.com
  • Ironport-phdr: 9a23:AJ878xWn0x3lR6wazBV2kSvEDjzV8LGtZVwlr6E/grcLSJyIuqrYbBODt8tkgFKBZ4jH8fUM07OQ7/iwHzRYqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba9xIRmssQndqtQdjJd/JKo21hbHuGZDdf5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2Ao/8LrrgXMTRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VDK/5KptVRTmijoINyQh/W/XlMJ+kb5brhyiqRxxwYHUYZ2aOvVxca7GYdMVXnBMUtpNWyBdAI6xaZYEAeobPeZfqonwv18AogWkBQayAePuyiJDiHHs0qw0yOQhFgfG1xEnEtwKrnvUtsv6NKISUOyvwqfH1zvCb+hR2Tf784XHaBYhoeyWUb1ubMXR1FMjGBnYjliJr4HuIjCb1vwVvmWU8+ZsT/+jh3Ilpg1rvzSiyMUhhpPUio4J1FzI7Sp0zYIvKdGlTEN2YcSoHIZOuy2GLYd6X80vTmJwtCY01LILuoK3cS0PxZkjxBPQcPOKfo2V7h/tSumePDJ1hHx7d7+8mxq/9FasxfbyVsS71ltBszBLncPWtn8X0hze8siHReV5/kemwTuCyw7c5PxYLUwpjKbVNpwuz7ApmpoUqkvMADX6mELrjK+KbUok/fWo6+L6bbn8vp+cLYh0ih3gPasyhsy/AOM4Mg4UU2ic5OS8yLnj/Ur+QLVJlPE5jq7ZsJXCKcQaoK62HRNV354s5hqjFTuqzcgUkHsdIF5Ydh+KjZLlN0zSLPzmFfu/hk6jkDZvx/DIJL3hBZDNI2DHnrj/Z7Zy9UtcyQopwd5R/Z1VBKoBIPX1WkLqrtPYCAI5PxaqzOn6FdVxzJkRWX+XDq+DLKzSqUOI5v4oI+SUeIAVvy/9J+E56P7qkH82gkQQfbKp3JsScHC3BO5qI0SfYXr2g9cOC30GvgQkTL+itFrXGzVUfjO5W782zjA9EoOvS4nZDMj5i7uYmSy/A5d+Z2ZcC1nKH22+JKueXPJZSi+IL8pw2hANSqOmTcd19xy0uQrrjZZuMfHT/AURs4+l2dRooeTOw0JhvQdoBtiQhjneB1p/mXkFEmdvjfJP5Hdlw1LG6pBWxvlRFNhd/fRMC11oPJjBieF2Fpb7R1CYJ4vbeBOdWtyjRAoJYJcp2dZXORR0HcjkgxzemSO3UedMyu67Qacs+6eZ5EDfYsZwz3Gai/sIsmJ+G450BDbjgaRysQ/OG4TOjkOV0b6wcrgR1zLM82HFyneSuEZfU0h7VqCXBH0=

This does work! Though I can't see how. What does it actually do? (ie
to which goals, in which order, and how many times (etc) does it apply
solve_eqs.

Thanks,

Jeremy


On 01/26/2019 12:39 AM, Gaëtan Gilbert wrote:
> I see. Maybe something like "all: do 2 solve_eqs." would work, otherwise
> I think we just don't expose the right primitives.
>
> Gaëtan Gilbert
>
> On 25/01/2019 14:18, Jeremy Dawson wrote:
>> Hi Gaëtan,
>>
>> all: repeat solve_eqs
>> doesn't succeed, I don't know exactly what all : repeat solve_eqs does
>> (previous emails addressed this question and the answer I was given)
>> though in this case it's consistent with applying
>> 1: repeat solve_eqs (which leaves one subgoal, so subgoal 2: is the
>> original subgoal 2)
>> then applying 2 : repeat solve_eqs.
>> or maybe just
>> 1: solve_eqs. then 2: solve_eqs. (ie without "repeat", I can't tell)
>>
>> It doesn't go back to try 1 : solve_eqs again.
>>
>> eg see the following, where the
>> second application of the tactic
>> all : repeat solve_eqs
>> makes progress beyond the results of the first application of it.
>>
>> 2 focused subgoals
>> (shelved: 5)
>>
>>     V : Set
>>     Φ2, Ψ1, Ψ2, Γ1 : list (PropF V)
>>     Q : PropF V
>>     sel1, l, l1 : list (PropF V)
>>     ============================
>>     ((Γ1 ++ Q :: sel1) ++ l ++ Φ2, Ψ1 ++ l1 ++ Ψ2) =
>>     (?Γ1 ++ ?Q :: ?Γ2 ++ ?Γ3, ?Δ)
>>
>> subgoal 2 is:
>>    G ++ (?Γ1 ++ ?Γ2 ++ ?Q :: ?Γ3, ?Δ, d0) :: H6 =
>>    G ++ ((Γ1 ++ sel1) ++ l ++ Q :: Φ2, Ψ1 ++ l1 ++ Ψ2, d0) :: H6
>>
>> gen_moveL < all : repeat solve_eqs.
>> 1 subgoal
>>
>>     V : Set
>>     Φ2, sel1, l : list (PropF V)
>>     ============================
>>     sel1 ++ l ++ Φ2 = (sel1 ++ l) ++ Φ2
>>
>> gen_moveL < all : repeat solve_eqs.
>> This subproof is complete, but there are some unfocused goals.
>> Try unfocusing with "}".
>>
>> Cheers,
>>
>> Jeremy
>>
>>
>> On 01/25/2019 08:53 PM, Gaëtan Gilbert wrote:
>>> Note that repeat runs the inner tactic focused on each goal separately
>>> so "repeat (all: solve_eqs)" would (if the syntax allowed it) be the
>>> same as "repeat (only 1: solve_eqs)" which is also the same as "repeat
>>> solve_eqs", and "repeat (only 2: solve_eqs)" is the same as "repeat
>>> fail" ie idtac.
>>>
>>> I feel like "all: repeat solve_eqs" should work given what you describe,
>>> can you explain how it fails?
>>>
>>> Gaëtan Gilbert
>>>
>>> On 25/01/2019 06:54, Jeremy Dawson wrote:
>>>>
>>>> Hi Cyprian,
>>>>
>>>> What I wanted is what I would express as
>>>> repeat (all : solve_eqs)
>>>> but it seems as though that form is forbidden.
>>>>
>>>> The various things I tried as indicated in my earlier email were simply
>>>> looking for alternatives that work.
>>>>
>>>> Detailed background to what I want: solve_eqs doesn't seem to enlarge
>>>> the number of goals in the cases where I want to use it, and sometimes
>>>> solves a goal, sometimes only after solve_eqs has instantiated an evar
>>>> in another goal, sometimes only after being repeatedly called on the
>>>> same goal (where each time it simplifies the goal)
>>>>
>>>> Cheers,
>>>>
>>>> Jeremy
>>>>
>>>>
>>>> On 01/25/2019 10:00 AM, Cyprien Mangin wrote:
>>>>> What you probably meant is something like "all : repeat solve_eqs"



Archive powered by MHonArc 2.6.18.

Top of Page