Genial, como sempre, Eduardo! Pra facilitar o uso, achei só que valeria a pena mencionar que: *smallmatrix* exige o pacote [amsmath] *mapsfromchar* exige o pacote [stmaryrd]
Abraços, JM 2011/11/12 Eduardo Ochs <[email protected]>: > ...pra substituição eu uso uma convenção que não é comum, mas que acho > que é bem clara: E[x:=t], e quando preciso de substituição simultânea > eu em geral ponho os ":=" empilhados, cada um numa linha. O código em > LaTeX é: > > \def\sm#1{\begin{smallmatrix}#1\end{smallmatrix}} > \def\subst#1{\left[\sm{#1}\right]} > > Exemplo: $A\subst{ x := t \\ y := u}$ > > Em algumas situações é conveniente pôr o bloquinho de substituição > antes da expressão, e aí dá pra usar algo como: > > Exemplo: $\subst{ t =: x \\ u =: y } A$ > > invertendo a ordem de tudo pra manter as variáveis mais perto da > expressão que os termos, e usando "=:" ao invés de ":=". Se você > preferir inverter a direção do \mapsto o truque é este - que não é > totalmente óbvio: > > \def\mapsot{\leftarrow\mapsfromchar} > > Abraços, > Eduardo Ochs > [email protected] > http://angg.twu.net/ > > > 2011/11/12 Rodrigo Freire <[email protected]> > >> Entendo que no contexto de programação essa ambiguidade é inadmissível e >> isso resolve sim, você está certo. Mas eu gostaria de algo mais humano, >> para apresentar nos textos básicos sem transformá-los em sopa de letrinhas. >> >> Abraço >> Rodrigo >> >> >> >> >> >> 2011/11/12 Joao Marcos <[email protected]> >> >> > A linha de investigação que me parece mais próxima de resolver este >> > problema específico é a dos *cálculos com substituição explícita*, que >> > aparecem em alguns ramos de estudo da teoria da reescrita e do cálculo >> > lambda. >> > http://en.wikipedia.org/wiki/Explicit_substitution >> > >> > Bastarão? >> > JM >> > >> > >> > 2011/11/12 Rodrigo Freire <[email protected]>: >> > > Olá João. >> > > >> > > >> > >> Mais grave me parece o problema anterior de usarmos a notação E[t/x], >> > >> usando a convenção anglófona, para expressar a substituição da >> > >> variável x pelo termo t na expressão E. Neste caso a leitura em Bom >> > >> Inglês é "substitute t for x in E". No entanto, uma alternativa de >> > >> leitura mais próxima do uso natural das preposições em português, e em >> > >> muitas outras línguas naturais, seria "substitute x by t in E", ou >> > >> seja, "substituir x por t em E" ou "a expressão E, com x substituído >> > >> por t". Notem que esta história toda fica particularmente confusa >> > >> quando o termo t é ele próprio uma variável y: qual a leitura de >> > >> E[y/x], "substitute y for x" ou "substitute y by x" --- são duas >> > >> substituições completamente diferentes! Para evitar este tipo de >> > >> confusão e imprimir um caráter de direcionalidade à substituição, >> > >> tenho preferido escrever E[x \mapsto t], que revela justamente x como >> > >> parte do domínio da função de substituição e t como parte de seu >> > >> contra-domínio, e ainda mostra a substituição como um tipo de manobra >> > >> _sintática_ que fazemos em uma linguagem de programação (ou na teoria >> > >> da reescrita). Mas não julgo que esta convenção E[x \mapsto t] seja >> > >> "melhor" do que outras; ela é apenas vantajosa em não permitir que eu >> > >> erre ao me confundir com o significado de "substitute t for x", em >> > >> inglês. >> > > >> > > >> > > Boa observação. >> > > >> > > Vou explicar um pouco o que eu acho mais confuso com relação a >> > substituição. >> > > >> > > Suponha que vamos fazer a substituição em uma expressão E. Depois da >> > > substituição, obtemos a expressão E[t/x]. >> > > Em muitas situações em que estamos lidando com uma fórmula específica, >> > não >> > > escrevemos E e depois E[t/x], mas apenas a expressão obtida. >> > > Por exemplo, a expressão inicial pode ser E: P(x,y) & F(x)=z. E[t/x} é >> > > P(t,y) & F(t)=z. >> > > >> > > O problema é que, apenas escrever a expressão final não indica qual o E >> > > inicial nem qual foi a substituição: ela pode, em geral, ser obtida de >> > > diferentes expressões por substituição. No exemplo acima, se temos >> > diante de >> > > nossos olhos apenas P(t,y) & F(t)=z, não temos indicação do que foi >> > feito e >> > > como essa expressão foi obtida. Por exemplo, pode ter sido obtida de >> > P(x,y) >> > > & w=z pela substituição de x por t e w por F(t), entre (infinitas) >> outras >> > > possibilidades. >> > > >> > > >> > > Se estamos em um contexto em que duas operações são realizadas na >> > expressão >> > > (muito comum em lógica) e vemos na nossa frente apenas a expressão >> final >> > > (também é muito comum em textos de lógica encontrar passagens puladas) >> > > ficamos perdidos facilmente. Com a expressão final em nossa frente não >> é >> > > claro quais foram as operações realizadas nem a ordem em que as >> operações >> > > foram realizadas. >> > > >> > > >> > > Para eliminar isso, só com uma notação que indique a expressão inicial >> e >> > as >> > > operações em uma ordem. Em matemática há uma notação standard para >> > > composição de funções, mas para muitas dessas operações a notação >> > standard >> > > não é funcional. >> > > >> > > Isso também tem o custo de tornar a notação mais carregada, o que >> também >> > não >> > > é muito desejável... >> > > >> > > Abraço >> > > Rodrigo >> > > >> > > >> > > >> > >> > >> > >> > -- >> > http://sequiturquodlibet.googlepages.com/ >> > >> _______________________________________________ >> Logica-l mailing list >> [email protected] >> http://www.dimap.ufrn.br/cgi-bin/mailman/listinfo/logica-l >> > _______________________________________________ > Logica-l mailing list > [email protected] > http://www.dimap.ufrn.br/cgi-bin/mailman/listinfo/logica-l > -- http://sequiturquodlibet.googlepages.com/ _______________________________________________ Logica-l mailing list [email protected] http://www.dimap.ufrn.br/cgi-bin/mailman/listinfo/logica-l
