This is a common issue with a simple fix.
config terminal
ip routing
end
copy run start
(You don't want to lose your configuration change and have to fix it again after a reboot.)
Let me start by saying proxy ARP is at best a sloppy solution. They only time I found it useful as a feature is when I was dealing with devices on the network that could not utilize classless netmasks or couldn't set a default route.
Yes, it can "cover" many client configuration or bad design problems, but it doesn't fix those problems. It also doesn't "cover" all of them and it can make troubleshooting issues more difficult.
Getting back to your question, the most likely reason this isn't working is that your client's aren't ARPing. My guess is that you have given them what is often considered a "standard" network mask of /24. In your example, there is likely no solution to get proxy ARP to work as clients should not accept a network mask less than /8 so your client will never think the destination is on the local network and send out an ARP request.
Why? A client uses it's IP address and network mask to determine if a destination is on the local network or not. If it is on the local network, the client checks it's ARP table for any entries for the destination and if one doesn't exist, will send out an ARP request to get this information. This is where the router with proxy ARP enabled can respond, but if there is no ARP request then the router cannot provide a proxy ARP response.
If the destination is not on the local network, then the client will check it's routing table to see where to forward the traffic. This is typically your default gateway.
Now, with the IP addresses you used, when the client checked the destination against it's IP/mask, it would find the destination is not on the local network. Going to the routing table, it won't have a specific entry for the destination network (clients won't by default) and no default route/gateway. It will then fail with a "no route to host" type of message.
Best Answer
In brief, because a vlan should roughly equate to a subnet. If a destination address is in the same subnet as the source address, it wouldn't want to route it. You switch within subnets but route between them.
For your example to work routers 3 and 4 can't be on the same subnet.
If instead router 3 was 192.168.10.1 and router 4 was 192.168.20.1, they'd be in different subnets and would need routing to be able to communicate. You could put 2 sub interfaces of router 6 - 192.168.10.254 and 192.168.20.254 for example and then add a static default route to each of router 3 and 4 to point to the corresponding subinterface on router 6. That default route says "to get to anything not in my subnet, go through my default gateway at 192.168.10.254" (or 192.168.20.254 for router 4)